[slide 1/14]

DirectFB 1.0.0-rc1 (2006-10-1) Quick Review
-- Japanese language support extention, porposal from Renesas mainlined



Hisao Munakata ( munakata.hisao (AT) renesas.com )
Renesas Solutions Corporation


c2006. Renesas Technology Corp., All rights reserved.

[translated by ikoma]
---------------------------- = ----------------------------
[slide 2/14]

Proposal of collaboration model with open source developers community

* Step_1 : Utilize codebase published as open source
 - Port onto another CPU architecture
 - Develop custom driver for hardware accelerator
 - Study to optimize implementation for hardware structrue
                      (e.g. buffer structures)


* Step_2 : Extend and adapt code for product requirements
 - Check if open source specification fits your implementation target
 - Extend / modify the open source specification if necessary


** For the issues with generality, returning to master code would make everybody happier


* Step_3 : Return (mainline) the extended code to original development project
 - "Talk" with maintainer in community
      (seeing face-to-face would make later communication smoother)
 - Proposing extended specifications, not conflicting with original functions, may be accepted in mainline


 ---------------------------- = ----------------------------
[slide 3/14]

Summary of proposals from Renesas


--- Want to make DirectFB usable with digital terrestrial broadcasting in Japan (ISDB-T) ---


* Support of Japanese fonts specified by ARIB [Association of Radio Industries and Businesses] etc.
(1) Support of AYUV color space 
        <-- Only ARGB supported in original DirectFB
(2) Support of 2bpp (4 level gray scale)
        <-- Only 1bpp or 8bpp supported in original
(3) Support of EUC and SJIS encoding
        <-- Only UTF-8 supported in original
(4) Support of fonts specified by ARIB
(5) Area specified clipping (Hardware implementation of switching planes)


* Support for low price solution (saving memory footprint)
(6) Adding limitation of font cache size
(7) Synchronized flipping mechanism with single buffer, multiple planes (Group Flip)
(8) Composition scenario customization (function to skip unused buffer for composition)


* Embedded CPU support
(9) Automatic alignment adjustment function for 32bit boundary (for color key reference)


http://www.directfb.org/index.php?path=Main%2FNews

 ---------------------------- = ----------------------------
[slide 4/14]

API $B!N(B1.0.0-rc1$B!O(B

* Added '2' bit packed alpha pixel format DSPF_A4,
e.g. for fonts.


- ARIB 4 level font support (2)

 ---------------------------- = ----------------------------
[slide 5/14]

API | IDirectFBDisplayLayer [1.0.0-rc1]


* Added SetClipRegions() that, if supported by hardware,
sets the clipping regions that are used to to enable or
disable visibility of parts of the layer. The number of
regions is stated in the display layer description. The
layer will be shown only in these regions or except in
these regions.



- Support of ARIB dynamic/static switching planes  (5)

 ---------------------------- = ----------------------------
[slide 6/14]

API | IDirectFBFont [1.0.0-rc1]


* Added EnumEncodings() enumerating all provided
encodings, also see Fonts section below.
* Added FindEncoding() to look up an encoding directly
by its name.
* Added SetEncoding() for choosing the encoding for local
interface methods and as a default for the surfaces.



- Support of ARIB charcter encoding  (4)

 ---------------------------- = ----------------------------
[slide 7/14]

API | IDirectFBSurface [1.0.0-rc1]


* Added SetEncoding() to choose an encoding for the text
routines, will be overwritten by SetFont() which takes the
default encoding of the new font, also see Fonts section
below.


- Support of ARIB charcter encoding  (4)

 ---------------------------- = ----------------------------
[slide 8/14]

Fonts $B!N(B1.0.0-rc1$B!O(B


* Added support for other encodings than UTF8.
Encodings are (or can be) provided with each font
implementation. This model reduces code sharing
slightly, but allows higher efficiency via optimized
combination of decoding and translation.
* Every encoding just has a name and an ID, where the
name can be chosen freely, except for DTEID_UTF8
which is always available and has the name "UTF8".
* Implemented UTF8 and "Latin1" encoding in FT2
font loader. Nice demonstration how different encodings
can be used, while still having a single glyph cache,
which is no longer based on character codes, but on their
raw indices.



- Support of ARIB charcter encoding  (3)(4)

 ---------------------------- = ----------------------------
[slide 9/14]

Graphics Core [1.0.0-rc1]

* Implemented font cache limit, currently hardcoded
to five rows, each row stores a number of glyphs.
When the maximum number is reached it will reuse
the least recently used row, kicking out all glyphs that
have been on it.



- Saving memory footprint(6)
(Support for fonts with large number of glyphs, such as Japanese)

 ---------------------------- = ----------------------------
[slide 10/14]

Software Renderer [1.0.0-rc1]

* Fix unaligned 32 bit accesses in color keying code.



- Optimization for embedded CPUs (SuperH, ARM, etc.)  (9)

 ---------------------------- = ----------------------------
[slide 11/14]

API [0.9.25]

* Added DSPF_AYUV, a 32bit packed AYUV format
for graphics, being the counterpart of ARGB
in the YUV color space.



- Support for ISDB-T Broadcasting specification  (1)

 ---------------------------- = ----------------------------
[slide 12/14]

Graphics Core $B!N(B0.9.25$B!O(B

* Fix negative line width handling in fill_tri()


- Feedbacked a bug encountered

 ---------------------------- = ----------------------------
[slide 13/14]


Function being proposed

CLUT to CLUT table translation function (SetIndexTranslation)



So the actual application could look like this:


int indices[4] = { -1, 20, 21, 22 };

surface->SetBlittingFlags( surface, DSBLIT_INDEX_TRANSLATION );
surface->SetIndexTranslation( surface, &indices, 4 );

surface->SetFont( surface, font2bpp );
surface->DrawString( surface, ...);




- Support for ARIB font color specification where gray scale color is specified
     (imossible to automatic computation) 

API extension to refer to main color table supporting specified 4 level gray scale


 ---------------------------- = ----------------------------
[slide 14/14]

Optimized implementation in gfxdriver
  -- not reflected in API --

*  Grouped Flip$B!'(B
 (inter-plane synchronized flip for single buffer setting  (7) )


- Saving memory footprint for ARIB plane composition



* Optiomization of composition processing according to plane usage (8)


- Saving bus width, and saving memory footprint

 ---------------------------- = ----------------------------
Non-Confidential
CELF Technical Jamboree #11
c2006. Renesas Technology 14 Corp., All rights reserved.
[translated by ikoma]


